In digital radio communication systems, bit interleaving is commonly utilized to improve error rates in the presence of burst errors associated with simulcast and channel fading. Bit interleaving is a process of time division multiplexing the transmission of code words such that consecutive bits of each code word are not transmitted consecutively. Instead, consecutive bits of each code word are separated in time by a number of bits referred to as the interleaving depth.
A conventional interleaving method stores the bits of a plurality of code words in a memory handled as a rectangular array in which each code word forms a row of the array, while each column of the array corresponds to the bits in one bit position of all the code words. The interleaving is then easily accomplished by transmitting the bits of the array in a column-by-column manner, thereby achieving an interleaving depth equal to the number of code words in the array.
A problem can occur with the conventional interleaving method, however, in systems transmitting information utilizing 2.sup.M symbols at 2.sup.M modulation levels, in which each symbol represents M symbol bits. The problem occurs if M is an even number (e.g., four-level or sixteen-level modulation) and if the number of code words in the rectangular array is an integer multiple of M. If those two conditions are met, the conventional interleaving method will transmit each code word by repeatedly using a single symbol bit position. This is undesirable, because some "weak" symbol bit positions consistently have higher error rates than others. A code word transmitted by repeatedly using a "weak" symbol bit position will have a greater frequency of uncorrectable errors than a code word in which the "weak" symbol bit positions are interspersed among "strong" symbol bit positions.
While a trivial solution to the problem might appear to be simply to chose a rectangular array size comprising a number of code words that is not an integer multiple of M, this solution is undesirable for the following reason. Efficiency of processing the data in the rectangular array is an important consideration. To maintain efficiency of processing, both the code word length and the interleaving depth should be a multiple of eight bits (one byte). This requirement causes the number of code words to be an integer multiple of M when M=2, 4, 8, et cetera. Furthermore, the value of M is generally dictated by system requirements and cannot be easily changed.
Thus, what is needed is a method and apparatus for interleaving the transmission of code word bits that utilizes a rectangular array size consistent with efficiency of data processing, while preventing a single symbol bit position from being used exclusively for transmitting any of the code words. The method and apparatus preferably will provide an even distribution of the symbol bit positions for transmitting each code word.